package cn.wolfcode.trip.base.service;


import cn.wolfcode.trip.base.domain.Strategy;
import cn.wolfcode.trip.base.query.QueryObject;
import cn.wolfcode.trip.base.query.StrategyQueryObject;
import cn.wolfcode.trip.base.query.UserQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface IStrategyService {

    PageInfo<Strategy> query(QueryObject qo);

    void saveOrUpdate(Strategy strategy);

    List<Strategy> listAll();

    /**
     * 根据攻略id查询信息
     * @param id
     * @return
     */
    Strategy getBystrategyId(Long id);

    /**
     * 根据关键字查询大攻略条数
     * @param qo
     * @return
     */
    int selectCountByKeyword(StrategyQueryObject qo);
    /**
     * 通过id查找用户收藏的攻略的信息
     * @param
     * @return
     */
    PageInfo selectReviewById(UserQueryObject qo);

    /**
     * 通过攻略id来保存收藏关系
     * @param userId
     * @param strategyId
     */
    void saveCollectByStrategyId(Long userId, Long strategyId);

    /**
     * 通过攻略的id和当前用户的id值来删除对应的收藏
     * @param userId
     * @param strategyId
     */
    void deleteCollectByStrategyId(Long userId, Long strategyId);

    /**
     * 通过攻略的id来统计当前攻略的收藏数量
     * @param strategyId
     * @return
     */
    int selectCollectCountByStrategyId(Long strategyId);

    /**
     * 通过攻略的id与用户的id来查找是否存在收藏关系
     * @param userId
     * @param strategyId
     * @return
     */
    boolean selectCollectByStrategyId(Long userId, Long strategyId);
}
